aboutsummaryrefslogtreecommitdiff
path: root/RhSolutions.SkuParser.Api/Models/Product.cs
diff options
context:
space:
mode:
Diffstat (limited to 'RhSolutions.SkuParser.Api/Models/Product.cs')
-rw-r--r--RhSolutions.SkuParser.Api/Models/Product.cs128
1 files changed, 64 insertions, 64 deletions
diff --git a/RhSolutions.SkuParser.Api/Models/Product.cs b/RhSolutions.SkuParser.Api/Models/Product.cs
index fd9ea45..26a7392 100644
--- a/RhSolutions.SkuParser.Api/Models/Product.cs
+++ b/RhSolutions.SkuParser.Api/Models/Product.cs
@@ -1,65 +1,65 @@
-using System.Text.RegularExpressions;
-
-namespace RhSolutions.SkuParser.Models;
-
-public record Product
-{
- /// <summary>
- /// Артикул РЕХАУ в заданном формате
- /// </summary>
- public required string Sku
- {
- get => _sku;
- set
- {
- _sku = IsValudSku(value)
- ? value
- : throw new ArgumentException("$Неверный артикул: {value}");
- }
- }
- private string _sku = string.Empty;
- private const string _parsePattern = @"(?<Lead>[1\s]|^|\b)(?<Article>\d{6})(?<Delimiter>[\s13-])(?<Variant>\d{3})(\b|$)";
- private const string _validnessPattern = @"^1\d{6}[1|3]\d{3}$";
-
- private static bool IsValudSku(string value)
- {
- return Regex.IsMatch(value.Trim(), _validnessPattern);
- }
- private static string GetSku(Match match)
- {
- string lead = match.Groups["Lead"].Value;
- string article = match.Groups["Article"].Value;
- string delimiter = match.Groups["Delimiter"].Value;
- string variant = match.Groups["Variant"].Value;
-
- if (lead != "1" && delimiter == "-")
- {
- return $"1{article}1{variant}";
- }
- else
- {
- return $"{lead}{article}{delimiter}{variant}";
- }
- }
-
- /// <summary>
- /// Проверка строки на наличие в ней артикула РЕХАУ
- /// </summary>
- /// <param name="value">Входная строка для проверки</param>
- /// <param name="product">Артикул, если найден. null - если нет</param>
- /// <returns>Если артикул в строке есть возвращает true, Если нет - false</returns>
- public static bool TryParse(string value, out Product? product)
- {
- product = null;
- MatchCollection matches = Regex.Matches(value, _parsePattern);
- if (matches.Count == 0)
- {
- return false;
- }
- string sku = GetSku(matches.First());
- product = new Product() { Sku = sku };
- return true;
- }
- public override int GetHashCode() => Sku.GetHashCode();
- public override string ToString() => Sku;
+using System.Text.RegularExpressions;
+
+namespace RhSolutions.SkuParser.Models;
+
+public record Product
+{
+ /// <summary>
+ /// Артикул РЕХАУ в заданном формате
+ /// </summary>
+ public required string Sku
+ {
+ get => _sku;
+ set
+ {
+ _sku = IsValudSku(value)
+ ? value
+ : throw new ArgumentException("$Неверный артикул: {value}");
+ }
+ }
+ private string _sku = string.Empty;
+ private const string _parsePattern = @"(?<Lead>[1\s]|^|\b)(?<Article>\d{6})(?<Delimiter>[\s13-])(?<Variant>\d{3})(\b|$)";
+ private const string _validnessPattern = @"^1\d{6}[1|3]\d{3}$";
+
+ private static bool IsValudSku(string value)
+ {
+ return Regex.IsMatch(value.Trim(), _validnessPattern);
+ }
+ private static string GetSku(Match match)
+ {
+ string lead = match.Groups["Lead"].Value;
+ string article = match.Groups["Article"].Value;
+ string delimiter = match.Groups["Delimiter"].Value;
+ string variant = match.Groups["Variant"].Value;
+
+ if (lead != "1" && delimiter == "-")
+ {
+ return $"1{article}1{variant}";
+ }
+ else
+ {
+ return $"{lead}{article}{delimiter}{variant}";
+ }
+ }
+
+ /// <summary>
+ /// Проверка строки на наличие в ней артикула РЕХАУ
+ /// </summary>
+ /// <param name="value">Входная строка для проверки</param>
+ /// <param name="product">Артикул, если найден. null - если нет</param>
+ /// <returns>Если артикул в строке есть возвращает true, Если нет - false</returns>
+ public static bool TryParse(string value, out Product? product)
+ {
+ product = null;
+ MatchCollection matches = Regex.Matches(value, _parsePattern);
+ if (matches.Count == 0)
+ {
+ return false;
+ }
+ string sku = GetSku(matches.First());
+ product = new Product() { Sku = sku };
+ return true;
+ }
+ public override int GetHashCode() => Sku.GetHashCode();
+ public override string ToString() => Sku;
} \ No newline at end of file