summaryrefslogtreecommitdiff
path: root/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings
diff options
context:
space:
mode:
Diffstat (limited to 'RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings')
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/Adapter.cs21
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/AdapterExternal.cs6
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/AdapterInternal.cs6
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/AdapterScrewcap.cs6
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/BendFormerHeating.cs22
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/Coupling.cs23
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/DrinkingWaterHeatingFitting.cs48
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ElbowModifier.cs18
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ScrewcapElbow.cs6
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/Sleeve.cs6
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/TPiece.cs25
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowExternal.cs6
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowInternal.cs6
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadTPieceExternal.cs26
-rw-r--r--RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadTPieceInternal.cs39
15 files changed, 264 insertions, 0 deletions
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/Adapter.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/Adapter.cs
new file mode 100644
index 0000000..4074e97
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/Adapter.cs
@@ -0,0 +1,21 @@
+using System.Text.RegularExpressions;
+
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public abstract class Adapter : DrinkingWaterHeatingFitting
+{
+ protected override string? BuildRhSolutionsName(string query)
+ {
+ Match diameter = _diameter.Match(query);
+ if (!diameter.Success)
+ {
+ return null;
+ }
+ Match thread = _thread.Match(query);
+ if (!thread.Success)
+ {
+ return null;
+ }
+ return $"{_title} {diameter.Groups["Diameter"]} {thread.Groups["Thread"]}";
+ }
+}
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/AdapterExternal.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/AdapterExternal.cs
new file mode 100644
index 0000000..8356c59
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/AdapterExternal.cs
@@ -0,0 +1,6 @@
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public class AdapterExternal : Adapter
+{
+ protected override string _title => "Переходник с наружной резьбой";
+} \ No newline at end of file
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/AdapterInternal.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/AdapterInternal.cs
new file mode 100644
index 0000000..56e36f1
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/AdapterInternal.cs
@@ -0,0 +1,6 @@
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public class AdapterInternal : Adapter
+{
+ protected override string _title => "Переходник с внутренней резьбой -угольник-переходник";
+} \ No newline at end of file
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/AdapterScrewcap.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/AdapterScrewcap.cs
new file mode 100644
index 0000000..43fa639
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/AdapterScrewcap.cs
@@ -0,0 +1,6 @@
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public class AdapterScrewcap : Adapter
+{
+ protected override string _title => "Переходник с накидной гайкой";
+} \ No newline at end of file
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/BendFormerHeating.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/BendFormerHeating.cs
new file mode 100644
index 0000000..9d17519
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/BendFormerHeating.cs
@@ -0,0 +1,22 @@
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public class BendFormerHeating : DrinkingWaterHeatingFitting
+{
+ protected override string _title => "Фиксатор поворота без колец";
+ protected override string? BuildRhSolutionsName(string query)
+ {
+ var diameterMatch = _diameter.Match(query);
+ if (!diameterMatch.Success)
+ {
+ return null;
+ }
+ string diameter = diameterMatch.Groups["Diameter"].Value;
+ if (diameter == "16")
+ {
+ diameter += "/17";
+ }
+ var angleMatch = _angle.Match(query);
+ string angle = angleMatch.Success ? angleMatch.Groups["Angle"].Value : "90";
+ return $"{_title} {diameter}/{angle}°";
+ }
+}
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/Coupling.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/Coupling.cs
new file mode 100644
index 0000000..4605308
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/Coupling.cs
@@ -0,0 +1,23 @@
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public class Coupling : DrinkingWaterHeatingFitting
+{
+ protected override string _title => "Муфта соединительная";
+ protected override string? BuildRhSolutionsName(string query)
+ {
+ var diameters = _diameter.Matches(query);
+ if (diameters.Count == 0)
+ {
+ return null;
+ }
+ if (diameters.Count < 2 ||
+ diameters.Count > 1 && diameters[0].Groups["Diameter"].Value == diameters[1].Groups["Diameter"].Value)
+ {
+ return $"{_title} равнопроходная {diameters[0].Groups["Diameter"]}";
+ }
+ else
+ {
+ return $"{_title} переходная {diameters[0].Groups["Diameter"]}-{diameters[1].Groups["Diameter"]}";
+ }
+ }
+}
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/DrinkingWaterHeatingFitting.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/DrinkingWaterHeatingFitting.cs
new file mode 100644
index 0000000..0adfac6
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/DrinkingWaterHeatingFitting.cs
@@ -0,0 +1,48 @@
+using System.Text.RegularExpressions;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Http.Extensions;
+
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public abstract class DrinkingWaterHeatingFitting : IProductQueryModifier
+{
+ protected static readonly Regex _diameter =
+ new(@"([\b\D]|^)?(?<Diameter>16|20|25|32|40|50|63)([\b\D]|$)");
+ protected static readonly Regex _angle =
+ new(@"([\b\D])(?<Angle>45|90)([\b\D]|$)");
+ protected static readonly Regex _thread =
+ new(@"([\b\D])(?<Thread>1\s+1/4|1\s+1/2|1/2|3/4|2|1)([\b\D]|$)");
+
+ protected virtual string _title { get; } = string.Empty;
+
+ public bool TryQueryModify(IQueryCollection collection, out QueryString queryString)
+ {
+ queryString = QueryString.Empty;
+ string query = collection["query"].ToString();
+ if (string.IsNullOrEmpty(query))
+ {
+ return false;
+ }
+ string? result = BuildRhSolutionsName(query);
+ if (result != null)
+ {
+ QueryBuilder qb = new()
+ {
+ { "query", result }
+ };
+ queryString = qb.ToQueryString();
+ return true;
+ }
+ return false;
+ }
+
+ protected virtual string? BuildRhSolutionsName(string query)
+ {
+ var match = _diameter.Match(query);
+ if (match.Success)
+ {
+ return $"{_title} {match.Groups["Diameter"]}";
+ }
+ return null;
+ }
+} \ No newline at end of file
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ElbowModifier.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ElbowModifier.cs
new file mode 100644
index 0000000..cccf77b
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ElbowModifier.cs
@@ -0,0 +1,18 @@
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public class ElbowModifier : DrinkingWaterHeatingFitting
+{
+ protected override string _title { get; } = "Угольник RAUTITAN -PLATINUM";
+ protected override string? BuildRhSolutionsName(string query)
+ {
+ var diameterMatch = _diameter.Match(query);
+ if (!diameterMatch.Success)
+ {
+ return null;
+ }
+ string diameter = diameterMatch.Groups["Diameter"].Value;
+ var angleMatch = _angle.Match(query);
+ string angle = angleMatch.Success ? angleMatch.Groups["Angle"].Value : "90";
+ return $"{_title} {angle} {diameter}";
+ }
+}
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ScrewcapElbow.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ScrewcapElbow.cs
new file mode 100644
index 0000000..97e2fb7
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ScrewcapElbow.cs
@@ -0,0 +1,6 @@
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public class ScrewcapElbow : Adapter
+{
+ protected override string _title => "Угольник-переходник с накидной гайкой";
+}
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/Sleeve.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/Sleeve.cs
new file mode 100644
index 0000000..c546236
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/Sleeve.cs
@@ -0,0 +1,6 @@
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public class Sleeve : DrinkingWaterHeatingFitting
+{
+ protected override string _title => "Монтажная гильза";
+}
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/TPiece.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/TPiece.cs
new file mode 100644
index 0000000..292da22
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/TPiece.cs
@@ -0,0 +1,25 @@
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public class TPiece : DrinkingWaterHeatingFitting
+{
+ protected override string _title => "Тройник RAUTITAN -PLATINUM";
+
+ protected override string? BuildRhSolutionsName(string query)
+ {
+ var diameters = _diameter.Matches(query)
+ .Select(match => match.Groups["Diameter"].Value)
+ .ToArray();
+ if (diameters.Length == 1)
+ {
+ return $"{_title} {diameters[0]}-{diameters[0]}-{diameters[0]}";
+ }
+ else if (diameters.Length >= 3)
+ {
+ return $"{_title} {diameters[0]}-{diameters[1]}-{diameters[2]}";
+ }
+ else
+ {
+ return null;
+ }
+ }
+}
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowExternal.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowExternal.cs
new file mode 100644
index 0000000..010fcc2
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowExternal.cs
@@ -0,0 +1,6 @@
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public class ThreadElbowExternal : Adapter
+{
+ protected override string _title => "Угольник-переходник с наружной резьбой";
+}
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowInternal.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowInternal.cs
new file mode 100644
index 0000000..187f66d
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadElbowInternal.cs
@@ -0,0 +1,6 @@
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public class ThreadElbowInternal : Adapter
+{
+ protected override string _title => "Угольник-переходник с внутренней резьбой";
+}
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadTPieceExternal.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadTPieceExternal.cs
new file mode 100644
index 0000000..af5df72
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadTPieceExternal.cs
@@ -0,0 +1,26 @@
+using System.Text.RegularExpressions;
+
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public class ThreadTPieceExternal : DrinkingWaterHeatingFitting
+{
+ protected override string _title => "Тройник RAUTITAN с наружной резьбой";
+ protected override string? BuildRhSolutionsName(string query)
+ {
+ MatchCollection diametersMatches = _diameter.Matches(query);
+ if (diametersMatches.Count == 0)
+ {
+ return null;
+ }
+ string thread = _thread.Match(query).Groups["Thread"].Value;
+ int[] diameters = diametersMatches.Select(match => int.Parse(match.Groups["Diameter"].Value)).ToArray();
+ if (diameters.Length == 1)
+ {
+ return $"{_title} {diameters[0]}-{diameters[0]}-R {thread}";
+ }
+ else
+ {
+ return $"{_title} {diameters[0]}-{diameters[1]}-R {thread}";
+ }
+ }
+} \ No newline at end of file
diff --git a/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadTPieceInternal.cs b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadTPieceInternal.cs
new file mode 100644
index 0000000..08afe62
--- /dev/null
+++ b/RhSolutions.QueryModifiers/DrinkingWaterHeatingFittings/ThreadTPieceInternal.cs
@@ -0,0 +1,39 @@
+using System.Text.RegularExpressions;
+
+namespace RhSolutions.QueryModifiers.DrinkingWaterHeatingFittings;
+
+public class ThreadTPieceInternal : DrinkingWaterHeatingFitting
+{
+ protected override string? BuildRhSolutionsName(string query)
+ {
+ MatchCollection diametersMatches = _diameter.Matches(query);
+ if (diametersMatches.Count == 0)
+ {
+ return null;
+ }
+ string thread = _thread.Match(query).Groups["Thread"].Value;
+ int[] diameters = diametersMatches.Select(match => int.Parse(match.Groups["Diameter"].Value)).ToArray();
+ if (diameters.Length == 1)
+ {
+ if (diameters[0] < 25)
+ {
+ return $"Тройник RAUTITAN настенный с внутренней резьбой {diameters[0]}-Rp{thread}-{diameters[0]}";
+ }
+ else
+ {
+ return $"Тройник RAUTITAN с внутр. резьбой на боков. проходе {diameters[0]}-Rp {thread}-{diameters[0]}";
+ }
+ }
+ else
+ {
+ if (diameters[0] < 25)
+ {
+ return $"Тройник RAUTITAN настенный с внутренней резьбой {diameters[0]}-Rp{thread}-{diameters[1]}";
+ }
+ else
+ {
+ return $"Тройник RAUTITAN с внутр. резьбой на боков. проходе {diameters[0]}-Rp {thread}-{diameters[1]}";
+ }
+ }
+ }
+}