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; }
}
}