using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

using Lightcast.Infrastructure;
namespace Lightcast.Presentation.Models {
	public class Aspect {
		/// <summary>
		/// The aspect id.
		/// </summary>
		[Required]
		[Rules("The globally unique identifier for the model.")]
		public Guid Id { get; set; }

		/// <summary>
		/// The aspect name.
		/// </summary>
		[Required]
		[DataType(DataType.Text)]
		[RegularExpression(Text.RegularExpressions.Name, ErrorMessage = Text.ErrorMessages.Name)]
		[Display(Name = "Name")]
		[Rules("The name of the aspect, you can't use: <em>[ ] | ; , $ \\ < > \"</em>")]
		public string Name { get; set; }

		/// <summary>
		/// The aspect description.
		/// </summary>
		[Required]
		[DataType(DataType.MultilineText)]
		[Display(Name = "Description")]
		[Rules("A brief description of the aspect.")]
		public string Description { get; set; }

		/// <summary>
		/// The aspect archetype.
		/// </summary>
		[Required]
		[Display(Name = "Archetype")]
		[Rules("The primary archetype that the aspect belongs to. Select <em>None</em> if this does not apply.")]
		public Archetype Archetype { get; set; }

		[Required]
		[Display(Name = "Classification")]
		[Rules("The classification of the aspect being created. <strong>All aspects must have a classification</strong>.")]
		public Classification Classification { get; set; }

		/// <summary>
		/// The various properties associated with the aspect.
		/// </summary>
		[Display(Name = "Properties")]
		[Rules("The properties attached to the aspect")]
		public IList<Property> Properties { get; set; }
	}
}