using System;

namespace ModelTools.Attributes
{
	/// <summary>
	/// Настройка для полей сущности правил маппинга в классе, который требуется заполнять данными из другого класса 
	/// (требуется для заполнения свойств объекта значениями одного класса значениями свойств объектов другого класса, 
	/// применяется при создании класса-описывающего сущность в хранилище из класса SetBindingModel
	/// и из класса-описывающего сущность в хранилище в класс ElementViewModel)
	/// </summary>
	[AttributeUsage(AttributeTargets.Property)]
	public class MapConfigurationAttribute : Attribute
	{
		/// <summary>
		/// Название свойства с класса, из которого извлекаем данные
		/// </summary>
		public string PropertyNameFromModel { get; set; }

		/// <summary>
		/// Сложное свойство (свойствое в другом классе-свойстве)
		/// </summary>
		public bool IsDifficle { get; set; }

		/// <summary>
		/// Настройка для полей сущности правил маппинга
		/// </summary>
		/// <param name="propertyNameFromMModel">Название свойства с класса, из которого извлекаем данные</param>
		/// <param name="isDifficle">Сложное свойство (свойствое в другом классе-свойстве)</param>
		public MapConfigurationAttribute(string propertyNameFromMModel, bool isDifficle = false)
		{
			PropertyNameFromModel = propertyNameFromMModel;
			IsDifficle = isDifficle;
		}
	}
}