using System; using System.Reflection; using System.Runtime.Serialization; using Umbraco.Core.Models.EntityBase; namespace Umbraco.Core.Models { /// /// Represents a Task /// [Serializable] [DataContract(IsReference = true)] public class Task : Entity, IAggregateRoot { private bool _closed; private TaskType _taskType; private int _entityId; private int _ownerUserId; private int _assigneeUserId; private string _comment; public Task(TaskType taskType) { _taskType = taskType; } private static readonly PropertyInfo ClosedSelector = ExpressionHelper.GetPropertyInfo(x => x.Closed); private static readonly PropertyInfo TaskTypeSelector = ExpressionHelper.GetPropertyInfo(x => x.TaskType); private static readonly PropertyInfo EntityIdSelector = ExpressionHelper.GetPropertyInfo(x => x.EntityId); private static readonly PropertyInfo OwnerUserIdSelector = ExpressionHelper.GetPropertyInfo(x => x.OwnerUserId); private static readonly PropertyInfo AssigneeUserIdSelector = ExpressionHelper.GetPropertyInfo(x => x.AssigneeUserId); private static readonly PropertyInfo CommentSelector = ExpressionHelper.GetPropertyInfo(x => x.Comment); /// /// Gets or sets a boolean indicating whether the task is closed /// [DataMember] public bool Closed { get { return _closed; } set { _closed = value; OnPropertyChanged(ClosedSelector); } } /// /// Gets or sets the TaskType of the Task /// [DataMember] public TaskType TaskType { get { return _taskType; } set { _taskType = value; OnPropertyChanged(TaskTypeSelector); } } /// /// Gets or sets the Id of the entity, which this task is associated to /// [DataMember] public int EntityId { get { return _entityId; } set { _entityId = value; OnPropertyChanged(EntityIdSelector); } } /// /// Gets or sets the Id of the user, who owns this task /// [DataMember] public int OwnerUserId { get { return _ownerUserId; } set { _ownerUserId = value; OnPropertyChanged(OwnerUserIdSelector); } } /// /// Gets or sets the Id of the user, who is assigned to this task /// [DataMember] public int AssigneeUserId { get { return _assigneeUserId; } set { _assigneeUserId = value; OnPropertyChanged(AssigneeUserIdSelector); } } /// /// Gets or sets the Comment for the Task /// [DataMember] public string Comment { get { return _comment; } set { _comment = value; OnPropertyChanged(CommentSelector); } } } }