namespace Monitoring.Core.Domain.CheckListManagement;

/// <summary>
/// Пункт проверки.
/// </summary>
public class CheckListTemplateItem
{
	/// <summary>
	/// ИД пункта проверки.
	/// </summary>
	public CheckListTemplateItemId Id { get; } = null!;

	/// <summary>
	/// ИД шаблона проверки.
	/// </summary>
	public CheckListTemplateId CheckListTemplateId { get; } = null!;

	/// <summary>
	/// Шаблон проверки.
	/// </summary>
	public CheckListTemplate CheckListTemplate { get; } = null!;

	/// <summary>
	/// Переводы пункта проверки.
	/// </summary>
	public List<CheckListTemplateItemTranslation> Translations { get; } = [];

	/// <summary>
	/// Порядковый номер пункта проверки.
	/// </summary>
	public int Index { get; set; }

	/// <summary>
	/// Создать пункт проверки.
	/// </summary>
	/// <param name="checkListTemplateId">ИД шаблона проверки.</param>
	/// <param name="index">Порядковый номер пункта проверки.</param>
	/// <returns>Пункт проверки.</returns>
	public static CheckListTemplateItem Create(CheckListTemplateId checkListTemplateId, int index)
	{
		return new CheckListTemplateItem(checkListTemplateId, index);
	}

	private CheckListTemplateItem(CheckListTemplateId checkListTemplateId, int index)
	{
		Id = CheckListTemplateItemId.Create(Guid.CreateVersion7());
		CheckListTemplateId = checkListTemplateId;
		Index = index;
	}

	// For EF
	protected CheckListTemplateItem() { }
}
