namespace Monitoring.Core.Domain.CheckListManagement;

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

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

	/// <summary>
	/// Пункт проверки.
	/// </summary>
	public CheckListTemplateItem Item { get; } = null!;

	/// <summary>
	/// Название пункта проверки.
	/// </summary>
	public string Name { get; } = null!;

	/// <summary>
	/// Описание пункта проверки.
	/// </summary>
	public string Description { get; } = null!;

	/// <summary>
	/// Код языка перевода.
	/// </summary>
	public string LanguageCode { get; } = null!;

	public static CheckListTemplateItemTranslation Create(
		CheckListTemplateItemId itemId,
		string languageCode,
		string name,
		string description
	)
	{
		return new CheckListTemplateItemTranslation(
			CheckListTemplateItemTranslationId.Create(Guid.CreateVersion7()),
			itemId,
			languageCode,
			name,
			description
		);
	}

	private CheckListTemplateItemTranslation(
		CheckListTemplateItemTranslationId id,
		CheckListTemplateItemId itemId,
		string languageCode,
		string name,
		string description
	)
	{
		Id = id;
		ItemId = itemId;
		LanguageCode = languageCode;
		Name = name;
		Description = description;
	}

	// For EF
	protected CheckListTemplateItemTranslation() { }
}
