diff options
Diffstat (limited to 'RhSolutions.QueryModifiers/CouplingModifier.cs')
-rw-r--r-- | RhSolutions.QueryModifiers/CouplingModifier.cs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/RhSolutions.QueryModifiers/CouplingModifier.cs b/RhSolutions.QueryModifiers/CouplingModifier.cs new file mode 100644 index 0000000..e8a1739 --- /dev/null +++ b/RhSolutions.QueryModifiers/CouplingModifier.cs @@ -0,0 +1,38 @@ +using System.Text.RegularExpressions; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Extensions; + +namespace RhSolutions.QueryModifiers; + +public class CouplingModifier : IProductQueryModifier +{ + private string pattern { get; } = @"([\b\D]|^)?(?<Diameter>16|20|25|32|40|50|63)([\b\D]|$)?"; + public bool TryQueryModify(IQueryCollection collection, out QueryString queryString) + { + queryString = QueryString.Empty; + var query = collection["query"].ToString(); + if (string.IsNullOrEmpty(query)) + { + return false; + } + var matches = Regex.Matches(query, pattern); + if (matches.Count < 1) + { + return false; + } + else + { + QueryBuilder qb = new(); + if (matches.Count < 2 || matches.Count > 1 && matches[0].Groups["Diameter"].Value == matches[1].Groups["Diameter"].Value) + { + qb.Add("query", $"Муфта соединительная равнопроходная {matches[0].Groups["Diameter"].Value}"); + } + else + { + qb.Add("query", $"Муфта соединительная переходная {matches[0].Groups["Diameter"].Value}-{matches[1].Groups["Diameter"].Value}"); + } + queryString = qb.ToQueryString(); + return true; + } + } +} |