Add ML Modifiers with attribute
This commit is contained in:
parent
2befa6a2a0
commit
a0a1c23c4d
@ -1,6 +1,6 @@
|
||||
namespace RhSolutions.Api.Tests;
|
||||
|
||||
public sealed class BypassQueryModifier : IProductQueryModifier
|
||||
public sealed class BypassQueryModifier : IProductMLModifier
|
||||
{
|
||||
public bool TryQueryModify(string query, out string queryModified)
|
||||
{
|
||||
|
@ -1,11 +1,11 @@
|
||||
using RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
using RhSolutions.QueryModifiers.DrinkingWaterHeatingPipes;
|
||||
using RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
using RhSolutions.MLModifiers.DrinkingWaterHeatingPipes;
|
||||
|
||||
namespace RhSolutions.Api.Tests;
|
||||
|
||||
public class ProductQueryModifierFactory
|
||||
{
|
||||
public IProductQueryModifier GetModifier(string productTypeName)
|
||||
public IProductMLModifier GetModifier(string productTypeName)
|
||||
{
|
||||
switch (productTypeName)
|
||||
{
|
||||
|
@ -23,7 +23,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\RhSolutions.QueryModifiers\RhSolutions.QueryModifiers.csproj" />
|
||||
<ProjectReference Include="..\RhSolutions.MLModifiers\RhSolutions.MLModifiers.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@ -1,2 +1,2 @@
|
||||
global using NUnit.Framework;
|
||||
global using RhSolutions.QueryModifiers;
|
||||
global using RhSolutions.MLModifiers;
|
34
RhSolutions.Api.sln
Normal file
34
RhSolutions.Api.sln
Normal file
@ -0,0 +1,34 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.31903.59
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RhSolutions.Api", "RhSolutions.Api\RhSolutions.Api.csproj", "{6AACEC90-0811-418D-8505-EB142A2B2AFA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RhSolutions.Api.Tests", "RhSolutions.Api.Tests\RhSolutions.Api.Tests.csproj", "{E49F46C4-5F07-4055-AE8B-700AA6FC35FD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RhSolutions.MLModifiers", "RhSolutions.MLModifiers\RhSolutions.MLModifiers.csproj", "{50A53BB3-1F9D-4F19-90DB-BCB4D49FF9FE}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{6AACEC90-0811-418D-8505-EB142A2B2AFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6AACEC90-0811-418D-8505-EB142A2B2AFA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6AACEC90-0811-418D-8505-EB142A2B2AFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6AACEC90-0811-418D-8505-EB142A2B2AFA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E49F46C4-5F07-4055-AE8B-700AA6FC35FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E49F46C4-5F07-4055-AE8B-700AA6FC35FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E49F46C4-5F07-4055-AE8B-700AA6FC35FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E49F46C4-5F07-4055-AE8B-700AA6FC35FD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{50A53BB3-1F9D-4F19-90DB-BCB4D49FF9FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{50A53BB3-1F9D-4F19-90DB-BCB4D49FF9FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{50A53BB3-1F9D-4F19-90DB-BCB4D49FF9FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{50A53BB3-1F9D-4F19-90DB-BCB4D49FF9FE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -1,6 +1,6 @@
|
||||
using Microsoft.AspNetCore.Http.Extensions;
|
||||
using RhSolutions.Api.Services;
|
||||
using RhSolutions.QueryModifiers;
|
||||
using RhSolutions.MLModifiers;
|
||||
|
||||
namespace RhSolutions.Api.Middleware;
|
||||
|
||||
@ -8,7 +8,7 @@ public class QueryModifier
|
||||
{
|
||||
private RequestDelegate _next;
|
||||
private IServiceProvider _provider;
|
||||
private IProductQueryModifier? _modifier;
|
||||
private IProductMLModifier? _modifier;
|
||||
|
||||
public QueryModifier(RequestDelegate nextDelegate, IServiceProvider provider)
|
||||
{
|
||||
@ -23,7 +23,7 @@ public class QueryModifier
|
||||
{
|
||||
string query = context.Request.Query["query"].ToString();
|
||||
var productType = typePredicter.GetPredictedProductType(query);
|
||||
_modifier = _provider.GetRequiredKeyedService<IProductQueryModifier>(productType);
|
||||
_modifier = _provider.GetRequiredKeyedService<IProductMLModifier>(productType);
|
||||
if (_modifier == null) return;
|
||||
if (_modifier.TryQueryModify(query, out var modified))
|
||||
{
|
||||
|
@ -2,9 +2,7 @@ using Microsoft.EntityFrameworkCore;
|
||||
using RhSolutions.Models;
|
||||
using RhSolutions.Api.Services;
|
||||
using RhSolutions.Api.Middleware;
|
||||
using RhSolutions.QueryModifiers;
|
||||
using RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
using RhSolutions.QueryModifiers.DrinkingWaterHeatingPipes;
|
||||
using RhSolutions.MLModifiers;
|
||||
using Microsoft.OpenApi.Models;
|
||||
using System.Reflection;
|
||||
|
||||
@ -29,39 +27,8 @@ builder.Services.AddDbContext<RhSolutionsContext>(opts =>
|
||||
});
|
||||
builder.Services.AddScoped<IPricelistParser, ClosedXMLParser>()
|
||||
.AddScoped<IProductTypePredicter, ProductTypePredicter>();
|
||||
builder.Services.AddModifiers();
|
||||
builder.Services.AddControllers();
|
||||
|
||||
builder.Services.AddKeyedTransient<IProductQueryModifier, Sleeve>("Монтажная гильза")
|
||||
.AddKeyedTransient<IProductQueryModifier, SupportingClip>("Желоб")
|
||||
.AddKeyedTransient<IProductQueryModifier, TPiece>("Тройник RAUTITAN")
|
||||
.AddKeyedTransient<IProductQueryModifier, ThreadTPieceExternal>("Тройник RAUTITAN резьбовой наружный")
|
||||
.AddKeyedTransient<IProductQueryModifier, ThreadTPieceInternal>("Тройник RAUTITAN резьбовой внутренний")
|
||||
.AddKeyedTransient<IProductQueryModifier, AdapterExternal>("Переходник на наружную резьбу")
|
||||
.AddKeyedTransient<IProductQueryModifier, AdapterInternal>("Переходник на внутреннюю резьбу")
|
||||
.AddKeyedTransient<IProductQueryModifier, AdapterScrewcap>("Переходник с накидной гайкой")
|
||||
.AddKeyedTransient<IProductQueryModifier, ThreadElbowExternal>("Угольник с наружной резьбой")
|
||||
.AddKeyedTransient<IProductQueryModifier, ThreadElbowInternal>("Угольник с внутренней резьбой")
|
||||
.AddKeyedTransient<IProductQueryModifier, ThreadElbowWallExternal>("Угольник настенный наружный")
|
||||
.AddKeyedTransient<IProductQueryModifier, ThreadElbowWallInternal>("Угольник настенный внутренний")
|
||||
.AddKeyedTransient<IProductQueryModifier, ThreadElbowDoubleWallInternal>("Проточный настенный угольник")
|
||||
.AddKeyedTransient<IProductQueryModifier, ScrewcapElbow>("Угольник с накидной гайкой")
|
||||
.AddKeyedTransient<IProductQueryModifier, Coupling>("Муфта соединительная")
|
||||
.AddKeyedTransient<IProductQueryModifier, Elbow>("Угольник RAUTITAN")
|
||||
.AddKeyedTransient<IProductQueryModifier, BendFormerHeating>("Фиксатор поворота отопление")
|
||||
.AddKeyedTransient<IProductQueryModifier, BendFormerSanitary>("Фиксатор поворота водоснабжение")
|
||||
.AddKeyedTransient<IProductQueryModifier, ConnectionBend>("Трубка Г-образная")
|
||||
.AddKeyedTransient<IProductQueryModifier, ConnectionTee>("Трубка Т-образная")
|
||||
.AddKeyedTransient<IProductQueryModifier, EuroconeFlex>("Резьбозажимное flex")
|
||||
.AddKeyedTransient<IProductQueryModifier, EuroconeStabil>("Резьбозажимное stabil")
|
||||
.AddKeyedTransient<IProductQueryModifier, EuroconeAdapter>("Переходник на евроконус")
|
||||
.AddKeyedTransient<IProductQueryModifier, EuroconeConnectionBend>("Резьбозажимное для трубки")
|
||||
.AddKeyedTransient<IProductQueryModifier, Nippel>("Ниппель")
|
||||
.AddKeyedTransient<IProductQueryModifier, DummyPlug>("Заглушка труб RAUTITAN")
|
||||
.AddKeyedTransient<IProductQueryModifier, FlexPipe>("Flex")
|
||||
.AddKeyedTransient<IProductQueryModifier, PinkPipe>("Pink")
|
||||
.AddKeyedTransient<IProductQueryModifier, StabilPipe>("Stabil")
|
||||
.AddKeyedTransient<IProductQueryModifier, BlackPipe>("Black");
|
||||
|
||||
builder.Services.AddSwaggerGen(options =>
|
||||
{
|
||||
options.SwaggerDoc("v1", new OpenApiInfo
|
||||
@ -77,7 +44,6 @@ builder.Services.AddSwaggerGen(options =>
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
var xmlFilename = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
|
||||
options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFilename));
|
||||
});
|
||||
@ -92,7 +58,4 @@ app.UseSwagger().UseSwaggerUI(options =>
|
||||
options.RoutePrefix = string.Empty;
|
||||
});
|
||||
|
||||
var context = app.Services.CreateScope().ServiceProvider
|
||||
.GetRequiredService<RhSolutionsContext>();
|
||||
|
||||
app.Run();
|
||||
|
@ -24,14 +24,14 @@
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\RhSolutions.QueryModifiers\RhSolutions.QueryModifiers.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="MLModels\model.zip">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\RhSolutions.MLModifiers\RhSolutions.MLModifiers.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@ -1,6 +1,6 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
public abstract class Adapter : DrinkingWaterHeatingFitting
|
||||
{
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Переходник на наружную резьбу")]
|
||||
public class AdapterExternal : Adapter
|
||||
{
|
||||
protected override string _title => "Переходник с наружной резьбой";
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Переходник на внутреннюю резьбу")]
|
||||
public class AdapterInternal : Adapter
|
||||
{
|
||||
protected override string _title => "Переходник с внутренней резьбой -угольник-переходник";
|
@ -0,0 +1,7 @@
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Переходник с накидной гайкой")]
|
||||
public class AdapterScrewcap : Adapter
|
||||
{
|
||||
protected override string _title => "Переходник с накидной гайкой";
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Фиксатор поворота отопление")]
|
||||
public class BendFormerHeating : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Фиксатор поворота";
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Фиксатор поворота водоснабжение")]
|
||||
public class BendFormerSanitary : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Фиксатор поворота с кольцами";
|
@ -1,10 +1,11 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Трубка Г-образная")]
|
||||
public class ConnectionBend : DrinkingWaterHeatingFitting
|
||||
{
|
||||
private static readonly int[] lengths = new [] { 250, 500, 1000 };
|
||||
private static readonly int[] lengths = [250, 500, 1000];
|
||||
private static readonly Regex _pattern =
|
||||
new(@"([\b\D]|^)?(?<Diameter>16|20|25)(\D+|.*15.*)(?<Length>\b\d{3,4})([\b\D]|$)");
|
||||
protected override string _title => "Трубка Г-образная";
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Трубка Т-образная")]
|
||||
public class ConnectionTee : ConnectionBend
|
||||
{
|
||||
protected override string _title => "Трубка Т-образная";
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Муфта соединительная")]
|
||||
public class Coupling : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Муфта соединительная";
|
@ -1,8 +1,8 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
public abstract class DrinkingWaterHeatingFitting : IProductQueryModifier
|
||||
public abstract class DrinkingWaterHeatingFitting : IProductMLModifier
|
||||
{
|
||||
protected static readonly Regex _diameter =
|
||||
new(@"([\b\D]|^)?(?<Diameter>16|20|25|32|40|50|63)([\b\D]|$)");
|
@ -0,0 +1,7 @@
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Заглушка труб RAUTITAN")]
|
||||
public class DummyPlug : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Заглушка для полимерн. трубы";
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Угольник RAUTITAN")]
|
||||
public class Elbow : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title { get; } = "Угольник -PLATINUM";
|
@ -1,4 +1,4 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
public abstract class Eurocone : DrinkingWaterHeatingFitting
|
||||
{
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Переходник на евроконус")]
|
||||
public class EuroconeAdapter : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Переходник на евроконус";
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Резьбозажимное для трубки")]
|
||||
public class EuroconeConnectionBend : DrinkingWaterHeatingFitting
|
||||
{
|
||||
public override bool TryQueryModify(string input, out string output)
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Резьбозажимное flex")]
|
||||
public class EuroconeFlex : Eurocone
|
||||
{
|
||||
protected override Dictionary<string, string> _titles => new()
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Резьбозажимное stabil")]
|
||||
public class EuroconeStabil : Eurocone
|
||||
{
|
||||
protected override Dictionary<string, string> _titles => new()
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Ниппель")]
|
||||
public class Nippel : DrinkingWaterHeatingFitting
|
||||
{
|
||||
public override bool TryQueryModify(string input, out string output)
|
@ -0,0 +1,7 @@
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Угольник с накидной гайкой")]
|
||||
public class ScrewcapElbow : Adapter
|
||||
{
|
||||
protected override string _title => "Угольник-переходник с накидной гайкой";
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Монтажная гильза")]
|
||||
public class Sleeve : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Монтажная гильза";
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Желоб")]
|
||||
public class SupportingClip : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Фиксирующий желоб для ПЭ-трубы";
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Тройник RAUTITAN")]
|
||||
public class TPiece : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Тройник -PLATINUM";
|
@ -1,7 +1,8 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Проточный настенный угольник")]
|
||||
public class ThreadElbowDoubleWallInternal : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Проточный настенный угольник";
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Угольник с наружной резьбой")]
|
||||
public class ThreadElbowExternal : Adapter
|
||||
{
|
||||
protected override string _title => "Угольник-переходник с наружной резьбой";
|
@ -0,0 +1,7 @@
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Угольник с внутренней резьбой")]
|
||||
public class ThreadElbowInternal : Adapter
|
||||
{
|
||||
protected override string _title => "Угольник-переходник с внутренней резьбой";
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Угольник настенный наружный")]
|
||||
public class ThreadElbowWallExternal : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Угольник настенный с наружной резьбой";
|
@ -1,7 +1,8 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Угольник настенный внутренний")]
|
||||
public class ThreadElbowWallInternal : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Угольник настенный внутр. резьба";
|
@ -1,7 +1,8 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Тройник RAUTITAN резьбовой наружный")]
|
||||
public class ThreadTPieceExternal : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Тройник с наружной резьбой";
|
@ -1,7 +1,8 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
[MLModifierKey("Тройник RAUTITAN резьбовой внутренний")]
|
||||
public class ThreadTPieceInternal : DrinkingWaterHeatingFitting
|
||||
{
|
||||
public override bool TryQueryModify(string input, out string output)
|
@ -0,0 +1,17 @@
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingPipes;
|
||||
|
||||
[MLModifierKey("Black")]
|
||||
public class BlackPipe : DrinkingWaterHeatingPipe
|
||||
{
|
||||
protected override string _title => "Black";
|
||||
protected override Dictionary<int, string> _diameterNames => new()
|
||||
{
|
||||
[16] = "16х2,2",
|
||||
[20] = "20х2,8",
|
||||
[25] = "25х3,5",
|
||||
[32] = string.Empty,
|
||||
[40] = string.Empty,
|
||||
[50] = string.Empty,
|
||||
[63] = string.Empty
|
||||
};
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingPipes;
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingPipes;
|
||||
|
||||
public class DrinkingWaterHeatingPipe : IProductQueryModifier
|
||||
public abstract class DrinkingWaterHeatingPipe : IProductMLModifier
|
||||
{
|
||||
protected static readonly Regex _diameter =
|
||||
new(@"([\b\D]|^)?(?<Diameter>16|20|25|32|40|50|63)([\b\D]|$)");
|
@ -0,0 +1,7 @@
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingPipes;
|
||||
|
||||
[MLModifierKey("Flex")]
|
||||
public class FlexPipe : DrinkingWaterHeatingPipe
|
||||
{
|
||||
protected override string _title => "Flex";
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingPipes;
|
||||
|
||||
[MLModifierKey("Pink")]
|
||||
public class PinkPipe : DrinkingWaterHeatingPipe
|
||||
{
|
||||
protected override string _title => "Pink+";
|
||||
|
||||
protected override Dictionary<string, string> _makeUp => new()
|
||||
{
|
||||
["бухт"] = "бухта",
|
||||
["штанг"] = "прямые отрезки",
|
||||
["отр"] = "прямые отрезки"
|
||||
};
|
||||
protected override Dictionary<int, string> _diameterNames => new()
|
||||
{
|
||||
[16] = "16х2,2",
|
||||
[20] = "20х2,8",
|
||||
[25] = "25х3,5",
|
||||
[32] = "32х4,4",
|
||||
[40] = "40х5,5",
|
||||
[50] = "50х6,9",
|
||||
[63] = "63х8,7"
|
||||
};
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
namespace RhSolutions.MLModifiers.DrinkingWaterHeatingPipes;
|
||||
|
||||
[MLModifierKey("Stabil")]
|
||||
public class StabilPipe : DrinkingWaterHeatingPipe
|
||||
{
|
||||
protected override string _title => "Stabil -PLATINUM";
|
||||
protected override Dictionary<int, string> _diameterNames => new()
|
||||
{
|
||||
[16] = "16,2х2,6",
|
||||
[20] = "20х2,9",
|
||||
[25] = "25х3,7",
|
||||
[32] = "32х4,7",
|
||||
[40] = "40х6,0",
|
||||
[50] = "50x6,9",
|
||||
[63] = "63x8,6"
|
||||
};
|
||||
}
|
6
RhSolutions.MLModifiers/IProductMLModifier.cs
Normal file
6
RhSolutions.MLModifiers/IProductMLModifier.cs
Normal file
@ -0,0 +1,6 @@
|
||||
namespace RhSolutions.MLModifiers;
|
||||
|
||||
public interface IProductMLModifier
|
||||
{
|
||||
public bool TryQueryModify(string query, out string queryModified);
|
||||
}
|
10
RhSolutions.MLModifiers/MLModifierKey.cs
Normal file
10
RhSolutions.MLModifiers/MLModifierKey.cs
Normal file
@ -0,0 +1,10 @@
|
||||
namespace RhSolutions.MLModifiers;
|
||||
|
||||
public class MLModifierKey : Attribute
|
||||
{
|
||||
public string Value { get; private set; }
|
||||
public MLModifierKey(string value)
|
||||
{
|
||||
Value = value;
|
||||
}
|
||||
}
|
25
RhSolutions.MLModifiers/MLModifiersRegistration.cs
Normal file
25
RhSolutions.MLModifiers/MLModifiersRegistration.cs
Normal file
@ -0,0 +1,25 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System.Reflection;
|
||||
|
||||
namespace RhSolutions.MLModifiers;
|
||||
|
||||
public static class MLModifiersRegistration
|
||||
{
|
||||
public static void AddModifiers(this IServiceCollection services)
|
||||
{
|
||||
var types = AppDomain.CurrentDomain.GetAssemblies()
|
||||
.SelectMany(s => s.GetTypes())
|
||||
.Where(p => p.IsDefined(typeof(MLModifierKey), true));
|
||||
|
||||
foreach (Type t in types)
|
||||
{
|
||||
string key = GetModifierKey(t);
|
||||
services.AddKeyedTransient(typeof(IProductMLModifier), key, t);
|
||||
}
|
||||
}
|
||||
|
||||
private static string GetModifierKey(Type t)
|
||||
{
|
||||
return t.GetCustomAttribute<MLModifierKey>()?.Value ?? string.Empty;
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
public class AdapterScrewcap : Adapter
|
||||
{
|
||||
protected override string _title => "Переходник с накидной гайкой";
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
public class DummyPlug : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Заглушка для полимерн. трубы";
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
public class ScrewcapElbow : Adapter
|
||||
{
|
||||
protected override string _title => "Угольник-переходник с накидной гайкой";
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
public class Sleeve : DrinkingWaterHeatingFitting
|
||||
{
|
||||
protected override string _title => "Монтажная гильза";
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
|
||||
|
||||
public class ThreadElbowInternal : Adapter
|
||||
{
|
||||
protected override string _title => "Угольник-переходник с внутренней резьбой";
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingPipes;
|
||||
|
||||
public class BlackPipe : DrinkingWaterHeatingPipe
|
||||
{
|
||||
protected override string _title => "Black";
|
||||
protected override Dictionary<int, string> _diameterNames => new()
|
||||
{
|
||||
[16] = "16х2,2",
|
||||
[20] = "20х2,8",
|
||||
[25] = "25х3,5",
|
||||
[32] = string.Empty,
|
||||
[40] = string.Empty,
|
||||
[50] = string.Empty,
|
||||
[63] = string.Empty
|
||||
};
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingPipes;
|
||||
|
||||
public class FlexPipe : DrinkingWaterHeatingPipe
|
||||
{
|
||||
protected override string _title => "Flex";
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingPipes;
|
||||
|
||||
public class PinkPipe : DrinkingWaterHeatingPipe
|
||||
{
|
||||
protected override string _title => "Pink+";
|
||||
|
||||
protected override Dictionary<string, string> _makeUp => new()
|
||||
{
|
||||
["бухт"] = "бухта",
|
||||
["штанг"] = "прямые отрезки",
|
||||
["отр"] = "прямые отрезки"
|
||||
};
|
||||
protected override Dictionary<int, string> _diameterNames => new()
|
||||
{
|
||||
[16] = "16х2,2",
|
||||
[20] = "20х2,8",
|
||||
[25] = "25х3,5",
|
||||
[32] = "32х4,4",
|
||||
[40] = "40х5,5",
|
||||
[50] = "50х6,9",
|
||||
[63] = "63х8,7"
|
||||
};
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingPipes;
|
||||
|
||||
public class StabilPipe : DrinkingWaterHeatingPipe
|
||||
{
|
||||
protected override string _title => "Stabil -PLATINUM";
|
||||
protected override Dictionary<int, string> _diameterNames => new()
|
||||
{
|
||||
[16] = "16,2х2,6",
|
||||
[20] = "20х2,9",
|
||||
[25] = "25х3,7",
|
||||
[32] = "32х4,7",
|
||||
[40] = "40х6,0",
|
||||
[50] = "50x6,9",
|
||||
[63] = "63x8,6"
|
||||
};
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
namespace RhSolutions.QueryModifiers;
|
||||
|
||||
public interface IProductQueryModifier
|
||||
{
|
||||
public bool TryQueryModify(string query, out string queryModified);
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.31903.59
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RhSolutions.Api", "RhSolutions.Api\RhSolutions.Api.csproj", "{FD778359-7E92-4B5C-A4F9-7942A28E58F5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RhSolutions.QueryModifiers.Tests", "RhSolutions.Api.Tests\RhSolutions.QueryModifiers.Tests.csproj", "{9A4E9EFA-B854-4C29-AA94-A6CE074EDABA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RhSolutions.QueryModifiers", "RhSolutions.QueryModifiers\RhSolutions.QueryModifiers.csproj", "{0C96960B-859B-4376-882E-AA0EB203B1EA}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{FD778359-7E92-4B5C-A4F9-7942A28E58F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FD778359-7E92-4B5C-A4F9-7942A28E58F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FD778359-7E92-4B5C-A4F9-7942A28E58F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FD778359-7E92-4B5C-A4F9-7942A28E58F5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9A4E9EFA-B854-4C29-AA94-A6CE074EDABA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9A4E9EFA-B854-4C29-AA94-A6CE074EDABA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9A4E9EFA-B854-4C29-AA94-A6CE074EDABA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9A4E9EFA-B854-4C29-AA94-A6CE074EDABA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0C96960B-859B-4376-882E-AA0EB203B1EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0C96960B-859B-4376-882E-AA0EB203B1EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0C96960B-859B-4376-882E-AA0EB203B1EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0C96960B-859B-4376-882E-AA0EB203B1EA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
Loading…
Reference in New Issue
Block a user