0
0
RhSolutions-Api/RhSolutions.QueryModifiers/ThreadTPieceWall.cs

65 lines
1.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Text.RegularExpressions;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Extensions;
namespace RhSolutions.QueryModifiers;
public class ThreadTPieceInternal : IProductQueryModifier
{
private string diameterPattern = "16|20|25|32|40|50|63";
private string threadPattern = @"(\D|^)(?<Thread>1\s+1/4|1\s+1/2|1/2|3/4|2|1)(\D|$)";
public bool TryQueryModify(IQueryCollection collection, out QueryString queryString)
{
queryString = QueryString.Empty;
var query = collection["query"].ToString();
if (string.IsNullOrEmpty(query))
{
return false;
}
var diameters = Regex.Matches(query, diameterPattern);
if (diameters.Count == 0)
{
return false;
}
var thread = Regex.Match(query, threadPattern);
if (!thread.Success)
{
return false;
}
QueryBuilder qb = new()
{
{"query", ConstructName(diameters, thread)}
};
queryString = qb.ToQueryString();
return true;
}
protected virtual string ConstructName(MatchCollection diameters, Match thread)
{
Capture t = thread.Groups["Thread"].Captures.First();
if (diameters.Count == 1)
{
if (int.Parse(diameters[0].Value) < 25)
{
return $"Тройник настенный с внутренней резьбой {diameters[0]}-Rp{t}-{diameters[0]}";
}
else
{
return $"Тройник с внутр. резьбой на боков. проходе {diameters[0]}-Rp {t}-{diameters[0]}";
}
}
else
{
if (int.Parse(diameters[0].Value) < 25)
{
return $"Тройник настенный с внутренней резьбой {diameters[0]}-Rp{t}-{diameters[1]}";
}
else
{
return $"Тройник с внутр. резьбой на боков. проходе {diameters[0]}-Rp {t}-{diameters[1]}";
}
}
}
}