From 5dd46db31df556a570ce43987db1cdea2a4884ef Mon Sep 17 00:00:00 2001 From: Serghei Cebotari Date: Sat, 14 Oct 2023 14:24:46 +0300 Subject: [PATCH] Add double-wall-mounted thread elbows --- .../RautitanFittingsTests.cs | 5 ++++ .../DrinkingWaterHeatingFitting.cs | 2 +- .../ThreadElbowDoubleWallInternal.cs | 29 +++++++++++++++++++ .../ProductQueryModifierFactory.cs | 2 ++ 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowDoubleWallInternal.cs diff --git a/RhSolutions.Api.Tests/RautitanFittingsTests.cs b/RhSolutions.Api.Tests/RautitanFittingsTests.cs index b1d9b92..0b54741 100644 --- a/RhSolutions.Api.Tests/RautitanFittingsTests.cs +++ b/RhSolutions.Api.Tests/RautitanFittingsTests.cs @@ -74,6 +74,11 @@ public class RautitanFittingsTests : ProductQueryModifierTests public void ThreadElbowWallInternalTest(string query, string modified) => Execute(productType: "Угольник настенный внутренний", query, modified); + [TestCase("Проточный настенный угольник 16/16-Rp 1/2 длинный RX+", "Проточный настенный угольник 16/16-Rp 1/2 длинный")] + [TestCase("Проточный настенный угольник 16/16-Rp 1/2 короткий RX+", "Проточный настенный угольник 16/16-Rp 1/2 короткий")] + public void ThreadElbowDoubleWallInternalTest(string query, string modified) + => Execute(productType: "Проточный настенный угольник", query, modified); + [TestCase("Трубка из. нерж. стали для подкл. радиатора, Г-образная 16/250", "Трубка Г-образная 16/250")] [TestCase("Монтажная трубка для радиатора, конечная, 16 х 15 х 300 мм", "Трубка Г-образная 16/250")] public void ConnectionBendTest(string query, string modified) diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/DrinkingWaterHeatingFitting.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/DrinkingWaterHeatingFitting.cs index 0adfac6..4ea9574 100644 --- a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/DrinkingWaterHeatingFitting.cs +++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/DrinkingWaterHeatingFitting.cs @@ -45,4 +45,4 @@ public abstract class DrinkingWaterHeatingFitting : IProductQueryModifier } return null; } -} \ No newline at end of file +} diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowDoubleWallInternal.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowDoubleWallInternal.cs new file mode 100644 index 0000000..69799ed --- /dev/null +++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowDoubleWallInternal.cs @@ -0,0 +1,29 @@ +using System.Text.RegularExpressions; + +namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings; + +public class ThreadElbowDoubleWallInternal : DrinkingWaterHeatingFitting +{ + protected override string _title => "Проточный настенный угольник"; + private Regex _type = new(@"([\b\Wу])(?длин)([\b\w\.\s])"); + + protected override string? BuildRhSolutionsName(string query) + { + var diameterMatches = _diameter.Matches(query); + if (diameterMatches.Count == 0) + { + return null; + } + var threadMatch = _thread.Match(query); + if (!threadMatch.Success) + { + return null; + } + var typeMatch = _type.Match(query); + string[] diameters = diameterMatches.Select(x => x.Groups["Diameter"].Value).ToArray(); + string thread = threadMatch.Groups["Thread"].Value; + string type = typeMatch.Success ? "длинный" : "короткий"; + + return $"{_title} {diameters[0]}/{(diameters.Length > 1 ? diameters[1] : diameters[0])}-Rp {thread} {type}"; + } +} \ No newline at end of file diff --git a/RhSolutions.QueryModifiers/ProductQueryModifierFactory.cs b/RhSolutions.QueryModifiers/ProductQueryModifierFactory.cs index b1d33b5..27dd9e2 100644 --- a/RhSolutions.QueryModifiers/ProductQueryModifierFactory.cs +++ b/RhSolutions.QueryModifiers/ProductQueryModifierFactory.cs @@ -33,6 +33,8 @@ public class ProductQueryModifierFactory return new ThreadElbowWallExternal(); case "Угольник настенный внутренний": return new ThreadElbowWallInternal(); + case "Проточный настенный угольник": + return new ThreadElbowDoubleWallInternal(); case "Угольник с накидной гайкой": return new ScrewcapElbow(); case "Муфта соединительная":