diff options
Diffstat (limited to 'src/Models/Sku.cs')
-rw-r--r-- | src/Models/Sku.cs | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/src/Models/Sku.cs b/src/Models/Sku.cs deleted file mode 100644 index 99fcce6..0000000 --- a/src/Models/Sku.cs +++ /dev/null @@ -1,116 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System; -using System.Text.RegularExpressions; - -namespace RhSolutions.Models -{ - public class Sku - { - private const string matchPattern = @"([1\D]|\b)(?<Article>\d{6})([1\s-]|)(?<Variant>\d{3})\b"; - private string _article; - private string _variant; - - public Sku(string article, string variant) - { - Article = article; - Variant = variant; - } - - public string Id - { - get - { - return $"1{Article}1{Variant}"; - } - set - { - if (TryParse(value, out IEnumerable<Sku> skus)) - { - if (skus.Count() > 1) - { - throw new ArgumentException($"More than one valid sku detected: {value}"); - } - else - { - this.Article = skus.First().Article; - this.Variant = skus.First().Variant; - } - } - else - { - throw new ArgumentException($"Invalid sku input: {value}"); - } - } - } - public string Article - { - get - { - return _article; - } - set - { - if (value == null || value.Length != 6 || value.Where(c => char.IsDigit(c)).Count() != 6) - { - throw new ArgumentException($"Wrong Article: {Article}"); - } - else - { - _article = value; - } - } - } - public string Variant - { - get - { - return _variant; - } - set - { - if (value == null || value.Length != 3 || value.Where(c => char.IsDigit(c)).Count() != 3) - { - throw new ArgumentException($"Wrong Variant: {Variant}"); - } - else _variant = value; - } - } - public static IEnumerable<Sku> GetValidSkus(string line) - { - MatchCollection matches = Regex.Matches(line, matchPattern); - if (matches.Count == 0) - { - yield break; - } - else - { - foreach (Match m in matches) - { - yield return new Sku(m.Groups["Article"].Value, m.Groups["Variant"].Value); - } - } - } - - public static bool TryParse(string line, out IEnumerable<Sku> skus) - { - MatchCollection matches = Regex.Matches(line, matchPattern); - if (matches.Count == 0) - { - skus = Enumerable.Empty<Sku>(); - return false; - } - - else - { - skus = GetValidSkus(line); - return true; - } - } - - public override string ToString() - { - return $"1{Article}1{Variant}"; - } - } -}
\ No newline at end of file |