diff options
Diffstat (limited to 'RhSolutions.SkuParser.Api/Models')
-rw-r--r-- | RhSolutions.SkuParser.Api/Models/Product.cs | 128 | ||||
-rw-r--r-- | RhSolutions.SkuParser.Api/Models/ProductQuantity.cs | 60 |
2 files changed, 94 insertions, 94 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 diff --git a/RhSolutions.SkuParser.Api/Models/ProductQuantity.cs b/RhSolutions.SkuParser.Api/Models/ProductQuantity.cs index b7b154d..d593f8b 100644 --- a/RhSolutions.SkuParser.Api/Models/ProductQuantity.cs +++ b/RhSolutions.SkuParser.Api/Models/ProductQuantity.cs @@ -1,30 +1,30 @@ -using CsvHelper.Configuration.Attributes; - -namespace RhSolutions.SkuParser.Models; - -public class ProductQuantity -{ - [Index(0)] - public required Product Product { get; set; } - [Index(1)] - public required double Quantity { get; set; } - - public override bool Equals(object? obj) - { - if (obj == null || GetType() != obj.GetType()) - { - return false; - } - ProductQuantity other = (ProductQuantity)obj; - return Product == other.Product && - Quantity == other.Quantity; - } - - public override int GetHashCode() - { - HashCode hash = new(); - hash.Add(Product); - hash.Add(Quantity); - return hash.ToHashCode(); - } -} +using CsvHelper.Configuration.Attributes;
+
+namespace RhSolutions.SkuParser.Models;
+
+public class ProductQuantity
+{
+ [Index(0)]
+ public required Product Product { get; set; }
+ [Index(1)]
+ public required double Quantity { get; set; }
+
+ public override bool Equals(object? obj)
+ {
+ if (obj == null || GetType() != obj.GetType())
+ {
+ return false;
+ }
+ ProductQuantity other = (ProductQuantity)obj;
+ return Product == other.Product &&
+ Quantity == other.Quantity;
+ }
+
+ public override int GetHashCode()
+ {
+ HashCode hash = new();
+ hash.Add(Product);
+ hash.Add(Quantity);
+ return hash.ToHashCode();
+ }
+}
|