summaryrefslogtreecommitdiff
path: root/RhSolutions.MLModifiers/DrinkingWaterHeatingPipes/DrinkingWaterHeatingPipe.cs
blob: f83d93a4f2f66fe317b871da3b0197201b9dd2dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using System.Text.RegularExpressions;

namespace RhSolutions.MLModifiers.DrinkingWaterHeatingPipes;

public abstract class DrinkingWaterHeatingPipe : IProductMLModifier
{
	protected static readonly Regex _diameter =
		new(@"([\b\D]|^)?(?<Diameter>16|20|25|32|40|50|63)([\b\D]|$)");
	protected static readonly Regex _type = 
		new(@"([\b\W])(?<Type>бухт|отр|штанг)([\b\w\.\s])");
	protected virtual string _title { get; } = string.Empty;

	protected virtual Dictionary<int, string> _diameterNames { get; } = new()
	{
		[16] = "16x2,2",
		[20] = "20x2,8",
		[25] = "25x3,5",
		[32] = "32x4,4",
		[40] = "40x5,5",
		[50] = "50x6,9",
		[63] = "63x8,6"
	};

	protected virtual Dictionary<string, string> _makeUp { get; } = new()
	{
		["бухт"] = "бухта",
		["штанг"] = "прям.отрезки",
		["отр"] = "прям.отрезки"
	};

	public bool TryQueryModify(string input, out string output)
	{
		output = string.Empty;
		var diameterMatch = _diameter.Match(input);
		if (!diameterMatch.Success)
		{
			return false;
		}
		var diameter = int.Parse(diameterMatch.Groups["Diameter"].Value);
		var typeMatch = _type.Match(input);
		if (typeMatch.Success)
		{
			var type = typeMatch.Groups["Type"].Value;
			output = $"Труба {_title} {_diameterNames[diameter]} {_makeUp[type]}";
		}
		else if (diameter < 32)
		{
			output = $"Труба {_title} {_diameterNames[diameter]} {_makeUp["бухт"]}";
		}
		else
		{
			output = $"Труба {_title} {_diameterNames[diameter]} {_makeUp["отр"]}";
		}
		return true;
	}
}