namespace Monitoring.Core.Domain.CallManagement;

/// <summary>
/// Комментарий к звонку.
/// </summary>
public sealed class CallCommentary
{
	public const int MaxLength = 1000; // согласовано с общим Description
	public string Value { get; }

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

	public static CallCommentary Create(string value)
	{
		if (string.IsNullOrWhiteSpace(value))
		{
			throw new ArgumentException("Значение не может быть пустым.", nameof(value));
		}

		if (value.Length > MaxLength)
		{
			throw new ArgumentOutOfRangeException(
				nameof(value),
				$"Длина комментария не должна превышать {MaxLength} символов."
			);
		}

		return new CallCommentary(value);
	}
}
