summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--RhSolutions.Api.Tests/RautitanFittingsTests.cs6
-rw-r--r--RhSolutions.QueryModifiers/ElbowModifier.cs24
-rw-r--r--RhSolutions.QueryModifiers/ProductQueryModifierFactory.cs6
3 files changed, 31 insertions, 5 deletions
diff --git a/RhSolutions.Api.Tests/RautitanFittingsTests.cs b/RhSolutions.Api.Tests/RautitanFittingsTests.cs
index ba11999..aac29b8 100644
--- a/RhSolutions.Api.Tests/RautitanFittingsTests.cs
+++ b/RhSolutions.Api.Tests/RautitanFittingsTests.cs
@@ -47,4 +47,10 @@ public class RautitanFittingsTests : ProductQueryModifierTests
[TestCase("Тройник RAUTITAN RX+ с наружной резьбой 20-20-R 3/4", "Тройник RAUTITAN с наружной резьбой 20-20-R 3/4")]
public void ThreadTPieceExternalTest(string query, string modified)
=> Execute(productType: "Тройник RAUTITAN резьбовой наружный", query, modified);
+
+ [TestCase("Фиксатор поворота трубы 16/17/90°, без колец (оцинк. сталь)", "Фиксатор поворота без колец 16/17/90°")]
+ [TestCase("Дуга 90° 25", "Фиксатор поворота без колец 25/90°")]
+ [TestCase("Дуга 90° r/d >= 2.5. Ø25 (767025)", "Фиксатор поворота без колец 25/90°")]
+ public void BendFormerHeatingTest(string query, string modified)
+ => Execute(productType: "Фиксатор поворота без колец", query, modified);
}
diff --git a/RhSolutions.QueryModifiers/ElbowModifier.cs b/RhSolutions.QueryModifiers/ElbowModifier.cs
index 05ca9b4..571fac8 100644
--- a/RhSolutions.QueryModifiers/ElbowModifier.cs
+++ b/RhSolutions.QueryModifiers/ElbowModifier.cs
@@ -4,10 +4,12 @@ using Microsoft.AspNetCore.Http.Extensions;
namespace RhSolutions.QueryModifiers
{
- public class ElbowModifier : IProductQueryModifier
+ public class ElbowModifier : IProductQueryModifier
{
- private string diameterPattern { get; } = @"\b(16|20|25|32|40|50|63)\b";
- private string anglePattern { get; } = @"\b(45|90)";
+ private string diameterPattern { get; } = @"([\b\D]|^)(?<Diameter>16|20|25|32|40|50|63)([\b\D]|$)";
+ private string anglePattern { get; } = @"([\b\D]|^)(?<Angle>45|90)([\b\D]|$)";
+
+ protected virtual string name {get;} = "Угольник RAUTITAN -PLATINUM";
public bool TryQueryModify(IQueryCollection collection, out QueryString queryString)
{
queryString = QueryString.Empty;
@@ -22,7 +24,7 @@ namespace RhSolutions.QueryModifiers
var angle = Regex.Match(query, anglePattern);
QueryBuilder qb = new()
{
- {"query", $"Угольник RAUTITAN -PLATINUM {(angle.Success ? angle.Captures.First() : 90)} {diameter.Captures.First()}"}
+ {"query", CreateName(angle, diameter)}
};
queryString = qb.ToQueryString();
return true;
@@ -32,5 +34,19 @@ namespace RhSolutions.QueryModifiers
return false;
}
}
+
+ protected virtual string CreateName(Match angle, Match diameter)
+ {
+ return $"{name} {(angle.Success ? angle.Groups["Angle"].Captures.First() : 90)} {diameter.Groups["Diameter"].Captures.First()}";
+ }
+ }
+
+ public class BendFormerHeating : ElbowModifier
+ {
+ protected override string name => "Фиксатор поворота без колец";
+ protected override string CreateName(Match angle, Match diameter)
+ {
+ return $"{name} {(diameter.Groups["Diameter"].Captures.First().ToString() == "16" ? "16/17" : diameter.Groups["Diameter"].Captures.First())}/{(angle.Success ? angle.Groups["Angle"].Captures.First() : 90)}°";
+ }
}
}
diff --git a/RhSolutions.QueryModifiers/ProductQueryModifierFactory.cs b/RhSolutions.QueryModifiers/ProductQueryModifierFactory.cs
index 32d5e5e..094b5ae 100644
--- a/RhSolutions.QueryModifiers/ProductQueryModifierFactory.cs
+++ b/RhSolutions.QueryModifiers/ProductQueryModifierFactory.cs
@@ -1,4 +1,6 @@
-namespace RhSolutions.QueryModifiers;
+using RhSolutions.QueryModifiers.Heating;
+
+namespace RhSolutions.QueryModifiers;
public class ProductQueryModifierFactory
{
@@ -32,6 +34,8 @@ public class ProductQueryModifierFactory
return new CouplingModifier();
case "Угольник RAUTITAN":
return new ElbowModifier();
+ case "Фиксатор поворота без колец":
+ return new BendFormerHeating();
case "Flex":
return new FlexPipeQueryModifier();
case "Pink":