From 67c7546d5910c55eb38b9e341d6a09918ea4c525 Mon Sep 17 00:00:00 2001 From: Serghei Cebotari Date: Fri, 13 Oct 2023 22:35:48 +0300 Subject: [PATCH] Add wall mounted thread elbows --- .../RautitanFittingsTests.cs | 15 ++++++++--- .../ThreadElbowWallExternal.cs | 22 ++++++++++++++++ .../ThreadElbowWallInternal.cs | 26 +++++++++++++++++++ .../ProductQueryModifierFactory.cs | 4 +++ 4 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowWallExternal.cs create mode 100644 RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowWallInternal.cs diff --git a/RhSolutions.Api.Tests/RautitanFittingsTests.cs b/RhSolutions.Api.Tests/RautitanFittingsTests.cs index 440d5d2..e897c03 100644 --- a/RhSolutions.Api.Tests/RautitanFittingsTests.cs +++ b/RhSolutions.Api.Tests/RautitanFittingsTests.cs @@ -56,7 +56,16 @@ public class RautitanFittingsTests : ProductQueryModifierTests => Execute(productType: "Фиксатор поворота отопление", query, modified); [TestCase("Фиксатор поворота с кольцами 90°, 32", "Фиксатор поворота с кольцами 90° 32")] - [TestCase("Фиксатор поворота с кольцами 45°, 16", "Фиксатор поворота с кольцами 45° 16")] - public void BendFormerSanitaryTest(string query, string modified) - => Execute(productType: "Фиксатор поворота водоснабжение", query, modified); + [TestCase("Фиксатор поворота с кольцами 45°, 16", "Фиксатор поворота с кольцами 45° 16")] + public void BendFormerSanitaryTest(string query, string modified) + => Execute(productType: "Фиксатор поворота водоснабжение", query, modified); + + [TestCase("Угольник настенный с наружной резьбой 16-R 1/2 RX+", "Угольник настенный с наружной резьбой 16-R 1/2")] + public void ThreadElbowWallExternalTest(string query, string modified) + => Execute(productType: "Угольник настенный наружный", query, modified); + + [TestCase("Угольник настенный с внутр. резьбой 16-Rp 1/2 RX+", "Угольник настенный внутр. резьба 16-Rp 1/2")] + [TestCase("Угольник настенный с длинным патрубком, внутр. резьба 16-Rp 1/2 RX+", "Угольник настенный внутр. резьба длинный 16-Rp 1/2")] + public void ThreadElbowWallInternalTest(string query, string modified) + => Execute(productType: "Угольник настенный внутренний", query, modified); } diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowWallExternal.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowWallExternal.cs new file mode 100644 index 0000000..47c4b07 --- /dev/null +++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowWallExternal.cs @@ -0,0 +1,22 @@ +namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings; + +public class ThreadElbowWallExternal : DrinkingWaterHeatingFitting +{ + protected override string _title => "Угольник настенный с наружной резьбой"; + protected override string? BuildRhSolutionsName(string query) + { + var diameterMatch = _diameter.Match(query); + if (!diameterMatch.Success) + { + return null; + } + var threadMatch = _thread.Match(query); + if (!threadMatch.Success) + { + return null; + } + string diameter = diameterMatch.Groups["Diameter"].Value; + string thread = threadMatch.Groups["Thread"].Value; + return $"{_title} {diameter}-R {thread}"; + } +} diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowWallInternal.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowWallInternal.cs new file mode 100644 index 0000000..3a33fce --- /dev/null +++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowWallInternal.cs @@ -0,0 +1,26 @@ +using System.Text.RegularExpressions; + +namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings; + +public class ThreadElbowWallInternal : DrinkingWaterHeatingFitting +{ + protected override string _title => "Угольник настенный внутр. резьба"; + private Regex _type = new(@"([\b\W])(?длин)([\b\w\.\s])"); + protected override string? BuildRhSolutionsName(string query) + { + var diameterMatch = _diameter.Match(query); + if (!diameterMatch.Success) + { + return null; + } + var threadMatch = _thread.Match(query); + if (!threadMatch.Success) + { + return null; + } + var typeMatch = _type.Match(query); + string diameter = diameterMatch.Groups["Diameter"].Value; + string thread = threadMatch.Groups["Thread"].Value; + return $"{_title} {(typeMatch.Success ? "длинный " : string.Empty)}{diameter}-Rp {thread}"; + } +} \ No newline at end of file diff --git a/RhSolutions.QueryModifiers/ProductQueryModifierFactory.cs b/RhSolutions.QueryModifiers/ProductQueryModifierFactory.cs index aa5e273..39d1bbb 100644 --- a/RhSolutions.QueryModifiers/ProductQueryModifierFactory.cs +++ b/RhSolutions.QueryModifiers/ProductQueryModifierFactory.cs @@ -27,6 +27,10 @@ public class ProductQueryModifierFactory return new ThreadElbowExternal(); case "Угольник с внутренней резьбой": return new ThreadElbowInternal(); + case "Угольник настенный наружный": + return new ThreadElbowWallExternal(); + case "Угольник настенный внутренний": + return new ThreadElbowWallInternal(); case "Угольник с накидной гайкой": return new ScrewcapElbow(); case "Муфта соединительная":