using System.Text.RegularExpressions;

namespace Monitoring.Core.Domain.AssetManagement;

public partial record Imei
{
	public const int MinLength = 15;
	public const int MaxLength = 16;

	public string Value { get; }

	private Imei(string value)
	{
		Value = value;
	}

	public static readonly Imei Empty = new(string.Empty);

	public static Imei Create(string value)
	{
		value = value.Trim();

		// if (value.Length < MinLength || value.Length > MaxLength)
		// {
		// 	throw new ArgumentException(
		// 		$"IMEI должен содержать от {MinLength} до {MaxLength} символов",
		// 		nameof(value)
		// 	);
		// }

		// if (!IsDigitsOnly().IsMatch(value))
		// {
		// 	throw new ArgumentException("IMEI должен содержать только цифры", nameof(value));
		// }

		return new Imei(value);
	}

	[GeneratedRegex(@"^\d+$")]
	private static partial Regex IsDigitsOnly();

	public static implicit operator string(Imei imei) => imei.Value;

	public override string ToString() => Value;
}
