0
0

Add bend formers

This commit is contained in:
Serghei Cebotari 2023-10-11 22:35:39 +03:00
parent f7a0febddb
commit 52543cf7a2
3 changed files with 31 additions and 5 deletions

View File

@ -47,4 +47,10 @@ public class RautitanFittingsTests : ProductQueryModifierTests
[TestCase("Тройник RAUTITAN RX+ с наружной резьбой 20-20-R 3/4", "Тройник RAUTITAN с наружной резьбой 20-20-R 3/4")] [TestCase("Тройник RAUTITAN RX+ с наружной резьбой 20-20-R 3/4", "Тройник RAUTITAN с наружной резьбой 20-20-R 3/4")]
public void ThreadTPieceExternalTest(string query, string modified) public void ThreadTPieceExternalTest(string query, string modified)
=> Execute(productType: "Тройник RAUTITAN резьбовой наружный", query, 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);
} }

View File

@ -4,10 +4,12 @@ using Microsoft.AspNetCore.Http.Extensions;
namespace RhSolutions.QueryModifiers 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 diameterPattern { get; } = @"([\b\D]|^)(?<Diameter>16|20|25|32|40|50|63)([\b\D]|$)";
private string anglePattern { get; } = @"\b(45|90)"; 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) public bool TryQueryModify(IQueryCollection collection, out QueryString queryString)
{ {
queryString = QueryString.Empty; queryString = QueryString.Empty;
@ -22,7 +24,7 @@ namespace RhSolutions.QueryModifiers
var angle = Regex.Match(query, anglePattern); var angle = Regex.Match(query, anglePattern);
QueryBuilder qb = new() QueryBuilder qb = new()
{ {
{"query", $"Угольник RAUTITAN -PLATINUM {(angle.Success ? angle.Captures.First() : 90)} {diameter.Captures.First()}"} {"query", CreateName(angle, diameter)}
}; };
queryString = qb.ToQueryString(); queryString = qb.ToQueryString();
return true; return true;
@ -32,5 +34,19 @@ namespace RhSolutions.QueryModifiers
return false; 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)}°";
}
} }
} }

View File

@ -1,4 +1,6 @@
namespace RhSolutions.QueryModifiers; using RhSolutions.QueryModifiers.Heating;
namespace RhSolutions.QueryModifiers;
public class ProductQueryModifierFactory public class ProductQueryModifierFactory
{ {
@ -32,6 +34,8 @@ public class ProductQueryModifierFactory
return new CouplingModifier(); return new CouplingModifier();
case "Угольник RAUTITAN": case "Угольник RAUTITAN":
return new ElbowModifier(); return new ElbowModifier();
case "Фиксатор поворота без колец":
return new BendFormerHeating();
case "Flex": case "Flex":
return new FlexPipeQueryModifier(); return new FlexPipeQueryModifier();
case "Pink": case "Pink":